package com.yjzx.util.binlog.core.executor;

import com.yjzx.util.binlog.core.entiry.BinLogData;

import java.util.Set;

/**
 * @author yjzx
 * @date 2024/8/15
 * @description 监听数据库基类接口
 */
public interface BinLogExecutor {
    /**
     * 是否允许所有表
     *
     * @return
     */
    boolean isAllTable();

    /**
     * 允许的表名
     *
     * @return
     */
    Set<String> allowDbTable();

    /**
     * 是否允许当前数据库表
     *
     * @param dbTable 表名
     * @return
     */
    default boolean isAllowTable(String dbTable) {
        return allowDbTable().isEmpty() ? isAllTable() : allowDbTable().contains(dbTable);
    }

    /**
     * 执行器
     *
     * @param item
     */
    void onEvent(BinLogData item);
}

